package com.kyist.frp.utils;

import cn.hutool.core.util.XmlUtil;
import cn.hutool.json.JSONUtil;
import org.w3c.dom.Document;

/**
 * 对象序列化工具
 */
public class ObjSerializeUtils {

    /**
     * 对象变JSON字符串
     * @param obj o
     * @return str
     */
    public static String ObjToJsonStr(Object obj){
        return JSONUtil.parseObj(obj).toString();
    }

    /**
     * 对象变XML字符串
     * @param obj o
     * @return str
     */
    public static String ObjToXMLStr(Object obj){
        //将对象转XMl文档对象
        Document document = XmlUtil.beanToXml(obj);
        return XmlUtil.format(document);
    }

    /**
     * JSON 或XML 字符串转对象
     * @param source 源字符串
     * @param clazz 对象字节码
     * @return 对象
     */
    public static<T> T strToObj(String source ,Class<T> clazz ){
        T t = null;
        try {
            if (source.startsWith("{")) {  //JSON解析
                t = JSONUtil.toBean(source, clazz);
            }else{ //XML解析
                Document document = XmlUtil.parseXml(source);
                t = XmlUtil.xmlToBean(document,clazz);
            }

        } catch (Exception e) {
            System.out.println(e.getMessage() + "\n" + "解析错误，字符串非JSON或XML");
        }
        return t;
    }


}
